package completablefuture;

import java.util.concurrent.CompletableFuture;

public class CompletableFutureDemo3 {
    /*
    3、任务并行取第一个
        CompletableFuture支持多个任务的并行执行，且返回第一个最先完成的任务结果。
        我们可以通过 anyOf() 方法来进行实现。
        需要注意的是，如果最快完成的任务出现异常，则返回的CompletableFuture 执行 get() 方法时会抛出异常。
    * */
    public static void main(String[] args) {
        CompletableFuture<String> future1 = CompletableFuture.supplyAsync(() -> "朋友小王去你家送药");
        CompletableFuture<String> future2 = CompletableFuture.supplyAsync(() -> "朋友小张去你家送药");
        CompletableFuture<Object> anyFutures = CompletableFuture.anyOf(future2,future1);
        System.out.println(anyFutures.join()); // 并行执行，且返回第一个最先完成的任务结果。
    }
}
